package com.pin.si.www.common.exception.utils;

import com.pin.si.www.common.pojo.result.ErrorCode;

import java.util.Collection;

import static com.pin.si.www.common.exception.utils.ThrowExceptionUtils.exception;

/**
 * 异常工具类
 * <p>
 * 提供常用的异常检查方法，用于参数校验和业务逻辑验证
 * </p>
 */
public class ExceptionUtils {

    /**
     * 如果对象为 null，则抛出指定的业务异常
     *
     * @param <T> 泛型参数
     * @param t 要检查的对象
     * @param errorCode 错误码
     */
    public static <T> void throwIsNull(T t, ErrorCode errorCode) {
        if (t == null) {
            exception(errorCode);
        }
    }

    /**
     * 如果对象不为 null，则抛出指定的业务异常
     *
     * @param <T> 泛型参数
     * @param t 要检查的对象
     * @param errorCode 错误码
     */
    public static <T> void throwIsNotNull(T t, ErrorCode errorCode) {
        if (t != null) {
            exception(errorCode);
        }
    }

    /**
     * 如果集合为 null 或空，则抛出指定的业务异常
     *
     * @param collection 要检查的集合
     * @param errorCode 错误码
     */
    public static void throwIsEmpty(Collection<?> collection, ErrorCode errorCode) {
        if (collection == null || collection.isEmpty()) {
            exception(errorCode);
        }
    }

    /**
     * 如果集合不为 null 且不为空，则抛出指定的业务异常
     *
     * @param collection 要检查的集合
     * @param errorCode 错误码
     */
    public static void throwIsNotEmpty(Collection<?> collection, ErrorCode errorCode) {
        if (collection != null && !collection.isEmpty()) {
            exception(errorCode);
        }
    }

}
